using System;
using System.Collections.Generic;
using System.Text;

namespace Sandia.MVCFramework.Request
{    
    /// <summary>
    /// Interface to be implemented by classes that
    /// represent requests that can be made of
    /// the controller
    /// </summary>
    public interface IRequest
    {
        /// <summary>
        /// Identifier for this request
        /// </summary>
        string RequestID
        {
            get;
        }

        /// <summary>
        /// ID for the requester
        /// </summary>
        string RequesterID
        {
            get;
            set;
        }

        /// <summary>
        /// Gets/sets the request parameter associated with the given parameter name
        /// </summary>
        /// <param name="parameterName">Parameter name to get/set parameter for</param>
        /// <returns>The request parameter for the given parameter name</returns>
        IRequestParameter this[string parameterName]
        {
            get;
            set;
        }

        /// <summary>
        /// A mapping of parameter names to request parameters
        /// </summary>
        Dictionary<string, IRequestParameter> Parameters
        {
            get;
        }
    }
}
